﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cash.View.Despesa
{
    public partial class Despesa : BasePageCash
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                String idProduto = Request.QueryString["Id"] != null ? Request.QueryString["Id"].ToString() : "";

                ddlCategoria.DataSource = cashEntity.CATEGORIA;
                ddlCategoria.DataTextField = "NOME";
                ddlCategoria.DataValueField = "ID_CATEGORIA";
                ddlCategoria.DataBind();

                ddlFormaPgto.DataSource = cashEntity.FORMA_PAGAMENTO;
                ddlFormaPgto.DataTextField = "DESCRICAO";
                ddlFormaPgto.DataValueField = "ID_FORMA_PAGAMENTO";
                ddlFormaPgto.DataBind();

                ddlSubCategoria.Items.Insert(0, new ListItem("<< Selecione uma Categoria >>", "0"));

                //Verifica se e referente a alteracao
                if (!"".Equals(idProduto))
                {
                    btnCadastrar.Text = "Atualizar";
                    txtData.Enabled = false;
                    txtTitulo.Enabled = false;

                    int valor = Int32.Parse(Request.QueryString["Id"]);
                    DESPESA despesa = new DESPESA();
                    despesa = cashEntity.DESPESA.Where(c => c.ID_DESPESA == valor).First();

                    txtData.Text = despesa.DATA_CADASTRO.ToString();
                    ddlCategoria.SelectedValue = despesa.SUB_CATEGORIA.ID_CATEGORIA.ToString();
                    ddlSubCategoria.SelectedValue = despesa.ID_SUB_CATEGORIA.ToString();
                    ddlFormaPgto.SelectedValue = despesa.ID_FORMA_PAGAMENTO.ToString();
                    txtValor.Text = despesa.VALOR.ToString();
                    txtTitulo.Text = despesa.TITULO.ToString();
                    txtDescricao.Value = despesa.DESCRICAO;
                }
            }
        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            hddResult.Value = "0";
            try
            {
                String tipoInstrucao = "";
                String idProduto = Request.QueryString["Id"] != null ? Request.QueryString["Id"].ToString() : "";

                ErroValidacao += Validacao.CampoVazio(txtData.Text, "data");
                ErroValidacao += Validacao.Data(txtData.Text, "data");
                ErroValidacao += Validacao.SelecioneDropDown(ddlCategoria.SelectedValue, "categoria");
                ErroValidacao += Validacao.SelecioneDropDown(ddlSubCategoria.SelectedValue, "sub categoria");
                ErroValidacao += Validacao.SelecioneDropDown(ddlFormaPgto.SelectedValue, "forma de pagamento");
                ErroValidacao += Validacao.CampoVazio(txtValor.Text, "valor");
                ErroValidacao += Validacao.Moeda(txtValor.Text, "valor");
                ErroValidacao += Validacao.CampoVazio(txtTitulo.Text, "titulo");

                //TESTE VALIDACAO
                if ("".Equals(ErroValidacao))
                {
                    DESPESA despesa = new DESPESA();

                    despesa.DATA_CADASTRO = DateTime.Parse(txtData.Text);
                    despesa.ID_SUB_CATEGORIA = Int32.Parse(ddlSubCategoria.SelectedValue);
                    despesa.ID_FORMA_PAGAMENTO = Int32.Parse(ddlFormaPgto.SelectedValue);
                    despesa.VALOR = Decimal.Parse(txtValor.Text);
                    despesa.TITULO = txtTitulo.Text;
                    despesa.DESCRICAO = txtDescricao.Value;
                    despesa.ID_USUARIO = Int32.Parse(Session["iduser"].ToString());
                    despesa.ID_STATUS = 1;
                    despesa.IS_PAGO = rbtPago.Checked = true ? true : false;

                    if ("".Equals(idProduto))
                    {
                        tipoInstrucao = "Cadastro realizado com sucesso";
                        //perfil.DATA_CADASTRO = DateTime.Now;
                        cashEntity.AddToDESPESA(despesa);
                    }
                    else
                    {
                        tipoInstrucao = "Atualização realizada com sucesso";
                    }

                    cashEntity.SaveChanges();
                    gravaBitacora(idProduto, "Despesa " + despesa.ID_DESPESA, 1);
                }
                else
                {
                    hddResult.Value = "ERRO";
                }
            }
            catch (Exception ex)
            {
                gravaBitacora("Erro", "Despesa -> " + ex.Message);
                hddResult.Value = "ERRO";
            }
        }

        protected void ddlCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            int valorUsu;
            Int32.TryParse(ddlCategoria.SelectedValue, out valorUsu);
            if (valorUsu > 0)
            {
                var dadosSubCategoria = from sub in cashEntity.SUB_CATEGORIA
                                      where sub.ID_CATEGORIA == valorUsu
                                      orderby sub.NOME
                                      select new { sub.ID_SUB_CATEGORIA, sub.NOME };

                ddlSubCategoria.DataValueField = "ID_SUB_CATEGORIA";
                ddlSubCategoria.DataTextField = "NOME";
                ddlSubCategoria.DataSource = dadosSubCategoria;
                ddlSubCategoria.DataBind();
                ddlSubCategoria.Items.Insert(0, new ListItem("<< Selecione >>", "0"));
            }
        }
    }
}